package com.example.graduation.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.graduation.entity.Goods;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.graduation.vo.GoodsOrShopInfoVo;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author xyc
 * @since 2022-02-11
 */
public interface GoodsService extends IService<Goods> {

    /**
     * 根据商品id和商店id查询商品信息
     * 这个方法主要针对商品列表已经被查询出来之后，对商品进行详细查询处理
     *
     * @param goodsId
     * @param shopId
     * @return
     */
    public Goods findGoodsById(Integer goodsId, Integer shopId, String token);


    /**
     * 根据商品类型查询
     *
     * @param type
     * @return
     */
    public Page<Goods> findGoodsByType(String type, Integer page, Integer size, Integer status);


    /**
     * 根据某类（可以是某类，也可以是模糊查询）商品低于某个价格进行查询
     *
     * @param word  关键字或者用户搜索框中的内容
     * @param price
     * @param page
     * @param size
     * @return
     */
    public Page<Goods> findGoodsByPriceLow(String word, Double price, Integer page, Integer size, Integer status);


    /**
     * 根据某类（可以是某类，也可以是模糊查询）商品价格区间查询
     *
     * @param word      关键字或者用户搜索框中的内容
     * @param lowPrice
     * @param highPrice
     * @param page
     * @param size
     * @return
     */
    public Page<Goods> findGoodsByPriceBetween(String word, Double lowPrice, Double highPrice, Integer page, Integer size, Integer status);


    /**
     * 根据某类（可以是某类，也可以是模糊查询）商品销量查询
     *
     * @param word   关键字或者用户搜索框中的内容
     * @param sale
     * @param page
     * @param size
     * @param status 这个状态表示为销售量从高到底或者从低到高的判断
     * @return
     */
    public Page<Goods> findGoodsBySale(String word, Integer sale, Integer page, Integer size, Integer status, Integer status1);


}
